package fox.framework.rpc.client;

import fox.framework.rpc.exception.RpcRuntimeException;

import java.lang.reflect.Type;

/**
 * Rpc下层架构入口
 * Rpc-Client 主要负责Rpc各个节点的连接与交互
 * 主模块有 注册器、连接通道、接受和发送数据的终端
 * 辅助模块有 心跳控制器、协议编解码器、序列化编解码器、同步交换器等
 * @author cuichao
 */
public interface RpcClient {

    /**
     * 执行远程Rpc服务
     * @param metaspace
     * @param path  request path
     * @param parameter 参数数组
     * @param expectType 期望返回的数据
     * @return
     * @throws Exception
     */
    Object execute(String metaspace, String path,Object[] parameter,Type expectType) throws RpcRuntimeException;
}
